<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Member;
use Cache;

class TestController extends Controller
{
    //
    public function input($name)
    {
        return 'name值为' . $name;
    }
    public function form()
    {
        return view('form');
    }
    public function transfer()
    {
        return '转账成功';
    }
    public function profile()
    {
        // dump(session()->all());
        return view('profile');
    }
    public function store(Request $request)
    {
        $validatedDate = $request->validate([
            'name' => 'required|string|bail|max:10',
            'email' => 'required|email',
            'age' => 'required|integer',
            'hibody' => 'required'
        ], [
            'name.required' => '姓名不能为空',
            'email.emali' => '邮件地址错误',
            '*.required' => '此行不能为空',
            'age.integer' => '不是数字',
        ]);
    }
    public function testSession()
    {
        session(['name' => '张三', 'age' => 18]);
        dump(session('name'));
        dump(session('age', 0));
        dump(session()->all());
        dump(session()->forget('name'));
        dump(session()->has('name'));
        session()->flush();
        dump(session()->all());
    }
    public function database()
    {
        $data = DB::table('member')->get();
        foreach ($data as $v) {
            dump($v->id . '-' . $v->name . '-' . $v->age . '-' . $v->email);
        }
    }
    public function storeDatabase()
    {
        // 增加数据
        // $data = [
        //     // 单行数据添加
        //     // 'name'=>'admin',
        //     // 'age' => '22',
        //     // 'email' => 'tom@laravel.test'
        //     // 多行数据添加
        //     ['name' => 'tom', 'age' => '23', 'email' => 'tom@laravel.test'],
        //     ['name' => 'jim', 'age' => '24', 'email' => 'jim@laravel.test'],
        //     ['name' => 'tim', 'age' => '25', 'email' => 'tim@laravel.test'],
        // ];
        // // insert()方法
        // dump(DB::table('member')->insert($data));
        // insertGetId()
        // dump(DB::table('member')->insertGetId($data));



        // 改变数据
        // $data = [
        //     // 'name'=>'tom'
        //     'email' => 'adlerian@adlerian.xyzd'
        // ];
        // // 将表中所有记录的name字段的值都改
        // dump(DB::table('member')->update($data));
        // // // 将表中所有记录的age字段的值都加1
        // dump(DB::table('member')->increment('age'));
        // // // 将表中所有记录的age字段的值都减1
        // dump(DB::table('member')->decrement('age'));
        // // // 将表中所有记录的age字段的值都加5
        // dump(DB::table('member')->increment('age', 5));
        // // //将表中所有记录的age字段的值都减5
        // dump(DB::table('member')->decrement('age', 5));

        // $data = [
        //     'name' => 'admin8',
        //     'age' => '66',
        //     'email' => 'adler@laravel.test'
        // ];
        // // 参数形式1：where(字段名, 运算符, 字段值)
        //  DB::table('member')->where('id', '=', '1')->update($data);
        // // 参数形式2：where(字段名, 字段值)，使用“=”运算符
        // DB::table('member')->where('id', '1')->update($data);
        // // 参数形式3：where([字段名 => 字段值])，使用“=”运算符，支持多个字段，AND关系
        // DB::table('member')->where(['id' => 1])->update($data);

        // // where()表示AND，即 “WHERE id=1 AND name='tom'”
        // DB::table('member')->where(['id' => 6])->where(['name' => 'tom'])->update($data);
        //  // orWhere()表示OR，即“WHERE id=1 OR name='tom'” 满足其中一个条件
        //  DB::table('member')->where(['id' => 4])->orWhere(['name' => 'admin1'])->update($data);


        // 查询数据

        // $data=DB::table('users')->get();

        // $data=DB::table('member')->where('id', '<=', 3)->get();
        // foreach ($data as $v) {
        //     echo $v->id .'-'. $v->name .'-'. $v->email.'<br>';
        // }

        // 单行查询
        // 查询id为1的记录
        // $data = DB::table('member')->where('id', '1')->first();
        // 输出id字段的值
        // dump($data->name);

        // $data=DB::table('users')->get(['name','email','password']);
        // dump($data);

        // 获取name和email两个字段，返回一条记录
        // $data = DB::table('member')->first(['name', 'email']);
        // dump($data);

        // 获取name、email两个字段
        // $data = DB::table('member')->select('name', 'email')->get();
        // dump($data);
        // 获取name、email两个字段（数组参数）
        // $data = DB::table('member')->select(['name', 'email'])->get();
        // dump($data);

        // 获取name字段，并设置别名为username
        // $data = DB::table('member')->select('name as username')->get();
        // dump($data);

        // 不解析字段，直接传入字符串作为字段列表
        // $data = DB::table('member')->select(DB::raw('name,age'))->get();
        // dump($data);

        // 查询id为1的记录，返回name字段的值
        // $name = DB::table('member')->where('id', '1')->value('name');
        // 输出结果
        // dump($name);

        // $data = DB::table('member')->orderBy('age', 'asc')->get();
        // $data = DB::table('member')->limit(3)->offset(3)->get();
        // // dump($data);
        // foreach ($data as $v) {
        //     echo $v->id . '-' . $v->name . '-' . $v->age . '-' . $v->email . '<br>';
        // }

        // //删除
        // $data=DB::table('member')->where('id',1)->delete();
        // //$data=DB::table('member')->truncate();
        // dump($data);

        // //执行sql语句
        // $data=DB::select('SELECT * FROM `member`');
        // dump($data);
        // //添加语句
        // DB::insert('INSERT INTO `member` SET `name`=\'tom\'');
        // //修改语句
        // //DB::update('UPDATE `member` SET `age`-\'20\' WHERE `name`-\'tom\'');
        // //删除
        // DB::delete('DELETE FROM `member` WHERE `name`=\'tom\'');
        // //新建表
        // DB::statement('CREATE TABLE `test`(`id` INT)');

        // $data = DB::table('article AS t1')->select(
        //     't1.id',
        //     't1.artucle_name AS article_name',
        //     't2.author_name AS author_name'
        // )->leftjoin(
        //     'author AS t2',
        //     't1.author_id','-','t2.id'
        // )->get();
        // foreach($data as $v){
        //     echo $v->id.'-'.$v->article_name.'-'.$v->author_name.'<br/>';
        // }
        // $data=DB::table('article as t1')->select(
        //     't1.id',
        //     't1.article_name as article_name',
        //     't2.author_name as author_name'
        // )->leftjoin(
        //     'author as t2',
        //     't1.author_id','=','t2.id'
        // )->get();
        // foreach($data as $v){
        //     echo $v->id.'-'.$v->article_name.'-'.$v->author_name.'<br>';
        // }
    }
    public function members()
    {
        //save方法
        // $member=new Member();
        // $member->name= 'save';
        // $member->age= '20';
        // $member->email='save@laravel.test';
        // dump($member->save());
        // dump($member->id);

        //fill方法
        // $data=['name'=>'fill','age'=>'20','email'=>'fill@laravel.tese'];
        // $member=new Member();
        // $member->fill($data);
        // $member->save();

        //create方法
        // $data=['name'=>'tom','age'=>'20'];
        // $member=Member::create($data);
        // $member->save();

        // find
        // // 查询主键为4的记录，返回模型对象
        // $member = Member::find(4);
        // dump($member->name);        // 获取name字段的值
        // // 添加查询条件，返回name和age字段
        // $member = Member::where('name', 'tom')->select('name', 'age')->find(5);
        // dump($member);
        // // 查询主键为1、2、3的记录，返回对象集合
        // $members = Member::find([1, 2, 3]);
        // dump($members);

        // 模型的get()方法
        // $members = Member::where('id', '2')->get();
        // dump(get_class($members[0]));    
        // 输出结果："App\Member"
        // DB类的get()方法
        // $members = DB::table('member')->where('id', 2)->get();
        // dump(get_class($members[0]));    
        // 输出结果："stdClass"

        // // 查询所有记录，返回对象集合
        // $members = Member::all();
        // dump($members);
        // // 查询所有记录的name和age字段，返回对象集合
        // $members = Member::all(['name', 'age']);
        // dump($members);

        //模型修改数据
        // $member=Member::find(4);
        // if($member) {
        //     $member->name='test';
        //     $member->age='0';
        //     $member->email='test@laravel.test';
        //     dump('修改成功');
        // } else {
        //     dump('修改失败');
        // }
        // Member::where('id',1)->update(['name'=>'test','age'=>30]);

        //模型删除数据
        // $member = Member::find(1);
        // if($member){
        //     $member->delete();
        //     dump('删除成功');
        // }else{
        //     dump('删除失败');
        // }
        // $data = Member::where('id',9)->delete();
        // dump($data);

        //关联模型
        //一对一,多对一
        // $data = \App\Article::all();
        // foreach ($data as $key => $value){
        //     echo '文章id'.$value->id.'<br>';
        //     echo '文章名称'.$value->article_name.'<br>';
        //     echo '作者名称'.$value->author->author_name.'<br>';
        // }
        //一对多
        // $data = \App\Author::all();
        // foreach ($data as $key => $value){
        //     echo '作者名称' .$value->author_name.'<br>';
        //     foreach ($value->article as $k => $v){
        //         echo $v->article_name.'<br>';
        //     }
        // }
        //多对多
        $data = \App\Article::all();
        foreach ($data as $key => $value) {
            echo '文章名称:' . $value->article_name . '<br>';
            echo '关键词:';
            foreach ($value->keyword as $k => $v) {
                echo $v->keyword . ' ';
            }
            echo '<hr>';
        }
    }
    public function avatar()
    {
        return view('avatar');
    }

    public function up(Request $request)
    {
        //判断文件在请求中是否存在
        if ($request->hasFile('avatar')) {
            //获取上传文件对象
            $avatar = $request->file('avatar');
            //验证文件是否上传成功
            if ($avatar->isValid()) {
                //自动生成文件名
                $name = md5(microtime((true)) . '.' . $avatar->extension());
                //将上传的文件移动到指定目录
                $avatar->move('static/upload', $name);
                //显示上传结果
                $path = '/static/upload/' . $name;
                return '<a href="' . $path . '">查看文件</a>';
            }
            return $avatar->getErrorMessage();
        }
        return '文件上传失败';
    }
    public function user()
    {
        $data = Member::paginate(2);
        return view('user',compact('data'));
    }

    public function captcha()
    {
        return view('captcha');
    }

    public function checkCaptcha(Request $request)
    {
        $this->validate($request, [
                'captcha'=> 'required|captcha',
        ] , [
            'captcha.captcha'=> '验证码有误'
        ]);
        return '验证成功';
    }

    public function jump()
    {
        return redirect('test/home');
    }

    public function cache()
    {
        Cache::put('name','张三');
        Cache::put('name','zhangsan');
        Cache::put('age','20');
        Cache::put('age','22');
    }
}
